home *** CD-ROM | disk | FTP | other *** search
/ BMUG PD-ROM A / PD-ROM A.iso / Programming / Programming Languages / MacOberon / MacOberon (tools) / KeyCmds.Mod (.txt) < prev    next >
Encoding:
Oberon Text  |  1990-12-20  |  2.1 KB  |  51 lines  |  [.Ob./.Ob2]

  1. Syntax10.Scn.Fnt
  2. Syntax10i.Scn.Fnt
  3. Syntax10b.Scn.Fnt
  4. MODULE KeyCmds;    (* CAS 9-Jul-90 *)    (*sample extensions of EdiTKeys / TBoxKeys*)
  5.     IMPORT
  6.         Oberon, Display, Fonts, Viewers, Texts, TextFrames;
  7.     CONST
  8.         cpm = 3;    (*charcters per month name*)
  9.         mnam: ARRAY 12*cpm + 1 OF CHAR;
  10.         W: Texts.Writer;
  11.     PROCEDURE Ch(ch: CHAR);
  12.     BEGIN Texts.Write(W, ch)
  13.     END Ch;
  14.     PROCEDURE Int(x: LONGINT);
  15.     BEGIN Texts.WriteInt(W, x, 0)
  16.     END Int;
  17.     PROCEDURE Int2(x: LONGINT);
  18.     BEGIN
  19.         IF x > 10 THEN Ch(CHR(x DIV 10 + 30H)) ELSE Ch("0") END;
  20.         Ch(CHR(x MOD 10 + 30H))
  21.     END Int2;
  22.     PROCEDURE Month(m: LONGINT);
  23.         VAR i, j: LONGINT;
  24.     BEGIN j := m * cpm; i := j - cpm; REPEAT Ch(mnam[i]); INC(i) UNTIL i = j
  25.     END Month;
  26.     PROCEDURE InsertAtCaret(buf: Texts.Buffer);
  27.         VAR msg: Oberon.CopyOverMsg;
  28.     BEGIN msg.text := TextFrames.Text(""); msg.beg := 0; msg.end := buf.len;
  29.         Texts.Insert(msg.text, 0, buf); Viewers.Broadcast(msg)
  30.     END InsertAtCaret;
  31.     PROCEDURE DateStamp*;    (**EdiTKeys and TBoxKeys**)
  32.         VAR S: Texts.Scanner; date, time: LONGINT;
  33.     BEGIN Oberon.GetClock(time, date); Texts.OpenScanner(S, Oberon.Par.text, Oberon.Par.pos); Texts.Scan(S);
  34.         IF S.class = Texts.Name THEN Texts.SetFont(W, Fonts.This(S.s)) ELSE Texts.SetFont(W, Fonts.Default) END;
  35.         Int(date MOD 20H); Ch("-"); Month( (date DIV 20H) MOD 10H ); Ch("-"); Int2( (date DIV 200H) MOD 100 );
  36.         InsertAtCaret(W.buf)
  37.     END DateStamp;
  38.     PROCEDURE Include*;    (**EdiTKeys and TBoxKeys**)
  39.         VAR S: Texts.Scanner; buf: Texts.Buffer; text: Texts.Text; beg, end: LONGINT;
  40.     BEGIN NEW(buf); Texts.OpenBuf(buf); Texts.OpenScanner(S, Oberon.Par.text, Oberon.Par.pos); Texts.Scan(S);
  41.         IF S.class = Texts.Name THEN text := TextFrames.Text(S.s); Texts.Scan(S); beg := 0;
  42.             IF S.class = Texts.Int THEN end := S.i; Texts.Scan(S);
  43.                 IF S.class = Texts.Int THEN beg := end; end := S.i END
  44.             ELSE end := text.len
  45.             END;
  46.             IF (0 <= beg) & (beg < end) & (end <= text.len) THEN Texts.Save(text, beg, end, buf); InsertAtCaret(buf) END
  47.         END
  48.     END Include;
  49. BEGIN Texts.OpenWriter(W); mnam := "JanFebMarAprMayJunJulAugSepOctNovDec"
  50. END KeyCmds.
  51.